#include<bits/stdc++.h> 
using namespace std;
//	乙级1015同款题
//宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”：“是故才德全尽谓之圣人，才德兼
//亡谓之愚人，德胜才谓之君子，才胜德谓之小人。凡取人之术，苟不得圣人，君子而与之，与其得
//小人，不若得愚人。”
//现给出一批考生的德才分数，请根据司马光的理论给出录取排名。
//输入格式：
//输入第一行给出 3 个正整数，分别为：N（≤10^5），即考生总数；L（≥60），为录取最低分数
//线，即德分和才分均不低于 L 的考生才有资格被考虑录取；H（<100），为优先录取线——德分和
//才分均不低于此线的被定义为“才德全尽”，此类考生按德才总分从高到低排序；才分不到但德分
//到线的一类考生属于“德胜才”，也按总分排序，但排在第一类考生之后；德才分均低于 H，但是
//德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者，按总分排序，但排在第二类考生之
//后；其他达到最低线 L 的考生也按总分排序，但排在第三类考生之后。
//随后 N 行，每行给出一位考生的信息，包括：准考证号 德分 才分，其中准考证号为 8 位整数，
//才分为区间 [0, 100] 内的整数。数字间以空格分隔。
//输出格式：
//输出第一行首先给出达到最低分数线的考生人数 M，随后 M 行，每行按照输入格式输出一位考生
//的信息，考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时，按其德分降序
//排列；若德分也并列，则按准考证号的升序输出。 
struct Student{
	int id;
	int de;
	int cai;
	int sum;
	bool operator<(const Student &s) const{
		if(sum!=s.sum) return sum>s.sum;
		else if(de!=s.de) return de>s.de;
		else return id<s.id;
	}
};
int main(){
	int N,l,h;
	cin>>N>>l>>h;
	set<Student> stus1;
	set<Student> stus2;
	set<Student> stus3;
	set<Student> stus4;
	for(int i = 0;i<N;i++){
		Student stu;
		scanf("%d %d %d",&stu.id,&stu.de,&stu.cai);
		stu.sum = stu.de + stu.cai;
		if(stu.de>=h && stu.cai>=h) stus1.insert(stu);
		else if(stu.de>=h && h>stu.cai && stu.cai>=l) stus2.insert(stu);
		else if(h>stu.de && stu.de>=stu.cai && stu.cai>=l) stus3.insert(stu);
		else if(stu.de>=l && stu.cai>=l) stus4.insert(stu);
	}
	cout<<stus1.size()+stus2.size()+stus3.size()+stus4.size()<<endl;
	set<Student>::iterator it;
	for(it=stus1.begin();it!=stus1.end();it++){
		printf("%d %d %d\n",(*it).id, (*it).de, (*it).cai);
	}
	for(it=stus2.begin();it!=stus2.end();it++){
		printf("%d %d %d\n",(*it).id, (*it).de, (*it).cai);
	}
	for(it=stus3.begin();it!=stus3.end();it++){
		printf("%d %d %d\n",(*it).id, (*it).de, (*it).cai);
	}
	for(it=stus4.begin();it!=stus4.end();it++){
		printf("%d %d %d\n",(*it).id, (*it).de, (*it).cai);
	}
	return 0;
}